.\" Use -mm macros
.ds Rh 1003.5: Ada Bindings
.ds Au Jayne Baker <cgb@d74sun.mitre.org>
.ds Dt January 7-11, 1991
.ds Lo New Orleans, LA
.ds Ed Jeffrey S. Haemer <jsh@usenix.org>
.ds Wd U\s-3SENIX\s0 Standards Watchdog Committee
.if '\*(Su'' \{\
.ds Su the \*(Dt meeting in \*(Lo:
.\}
.if n \{\
.tm Subject: Standards Update, \*(Rh
.tm From: \*(Ed
.tm Reply-To: std-unix@uunet.uu.net
.tm Organization: \*(Wd
.tm
.\}
.S 12
.TL
An Update on U\s-3NIX\s0\u\s-41\s0\d-Related Standards Activities
.FS 1.
UNIX\u\(rg\d is a Registered Trademark of UNIX System Laboratories
in the United States and other countries.
.FE
.nr :p 1
.sp
\*(Rh
.AF "\*(Ed, Report Editor"
.AU "\*(Wd"
.MT 4
.if n \{\
.nh
.na
.\}
.PF "'\*(DT Standards Update'     '\*(Rh'"
\*(DT
.sp
.P
\fB\*(Au\fP reports on \*(Su
.P
.H 1 Introduction
The Ada Language Binding to
the \s-1POSIX\s0 1003.1 Base Specification (P1003.5)
is moving through the \s-1IEEE\s0 ballot process.
.P
Now that ballot resolution has begun,
the P1003.5 working group no longer exists;
we are now the P1003.5 Ballot Resolution Group.
We spent the New Orleans meeting doing just that
\(emballot resolution\(em
addressing issues from our first ballot, chapter by chapter.
This is no small task,
so we also held an interim meeting, February 20 \- 22,
near Washington, D.C.
.P
This report outlines
some issues from the first round of balloting,
and touches on both potential future Ada work,
and our attempts to spread the P1003.5 word.
.H 1 "Ballot Resolution Issues"
Here's who is responsible for
specific sections of the P1003.5 binding:
.DS
.TS
center;
a a a.
Mitch Gart/Alsys	Section 1	General
Steve Schwarm/DEC	Section 2	Terminology and General Requirements
Ted Baker/Florida State	Section 3	Process Primitives
Steve Deller/Verdix	Section 4	Process Environment
Jim Lonjers/Unisys	Section 5	Files and Directories
Mitch Gart/Alsys	Section 6	Input and Output Primitives
Steve Schwarm/DEC	Section 7	Device- and Class-Specific Functions
Jim Moore/IBM	Section 8	Language-Specific Services for Ada
Dave Emery/MITRE	Chapter 9	System Databases
.TE
.DE
And here are some things
I found particularly interesting in the discussions they led.
.H 2 "Naming Convention Issues"
One global issue,
more editorial than technical
but that drew many ballot comments and objections,
was our lack of a procedure-and-function-naming convention.
We left names to the individual chapter authors,
promising ourselves that
we would address this issue later in document development.
We never really did,
but Bevin Brett/\s-1DEC\s0 proposed a naming convention
before New Orleans via electronic mail, with these guidelines:
.DL
.LI
Eliminate multiple names with same meaning by picking one
(e.g., change ``bad,'' ``invalid,'' etc. to ``bad'');
.LI
Eliminate lengthy prefixes
(e.g., change ``POSIX_Process_Primitives_Process_Template'' to ``Template'');
.LI
Make the parameter and subtype names the same.
.LE
.P
Unfortunately,
he also restructured packages liberally.
We worried about
making such sweeping changes after balloting had begun,
but adopted several of his recommendations.
Bevin agreed to revise his proposal,
incorporating the changes accepted by the group.
Chapter authors will evaluate the revised proposal.
Accepted naming changes,
supported by official ballot comments,
will be incorporated into the document.
.H 2 "I/O Units"
At least one balloter requests we use ``byte''
instead of ``I/O unit,''
since an \s-1I/O\s0 unit is both
``large enough to hold any member of the basic execution character set''
and ``>= 7 bits.''
Another goes farther,
arguing that if ``I/O unit'' is exactly same as C's ``char''
we should eliminate confusion by saying so.
A third balloter requests that \s-1POSIX\s0, C, and Ada character sets
be somehow unified.
.H 2 "Signals Discussion"
Many balloters objected to signal semantics.
.P
In the current, balloted draft (Draft 6)
signals are interrupt entries
and include semantics for interrupt delivery.
.P
P1003.4a uses a \s-1SIGWAIT\s0 model
with a single procedure equivalent to the Ada delay statement.
Our current model may
only support per-process signals,
not per-thread signals,
i.e., a subset of P1003.4a.
Should we try to develop an approach to signals
that does not break P1003.4a and P1003.4a/Ada?
.P
We also need to review P1003.4's new signal proposal carefully
to decide how much to change the P1003.5 binding to accommodate it.
We do not know how balloters will react to such changes.
Some balloters do not want signals tied to Ada tasks,
because they want to use signals without using tasks.
We could provide this,
but others think signals without tasks is absurd.
We continue to work on this.
.H 2 "File Descriptor Types"
File descriptor types are controversial.
Balloters are divided on alternatives.
Should file descriptors be private types?
limited private types?
integers?
Each has its advocates.
Here are sample arguments for making file descriptors private:
.DL
.LI
Arithmetic operations are available for integer types.
Does it make sense to perform additions on file descriptors?
.LI
Sockets and 1003.4 memory-mapped files are used like file descriptors
but may not be implemented as small integers, even in C;
.LI
In V.4 the file descriptor limit has gone
from 20 to some high number (4K?),
making arrays of file descriptors less practical.
(Array indexing with file descriptors
is arguably bad C programming style anyway.)
.LE
.P
Despite such arguments,
we left file descriptors integer types
because of the P1003.1 standard
(note the definition of \fIdup(2)\fP).
We noted in the rationale
that we could have made file descriptors a private Ada type,
required that they look like integers,
and included special operations
to disallow arithmetic functions on them,
but the group thought that this would be too cluttered.
File descriptors are acceptably close to integers.
.H 2 "Blocking Behavior"
Tasks are a major source of complaints for Unix Ada users.
No one wants a whole process to block
when one task within that process performs \s-1I/O\s0
or waits for a file lock.
Unfortunately, P1003.1 doesn't support threads;
blocking blocks an entire process,
so our document provides support for per-process blocking.
Should it also provide per-task blocking?
Making implementors provide both behaviors
could prove the wrong decision once POSIX supports threads.
.P
After some discussion,
two models for blocking were proposed:
.DL
.LI
the knife-switch model, and
.LI
the file model.
.LE
.P
A knife-switch-model implementation elects either
program blocking on \s-1I/O\s0
or task-level blocking on \s-1I/O\s0 for all files.
Only one is supported.
A file-model implementation selects
either task- or program-level blocking for \s-1I/O\s0
on a per-file basis.
.P
Mitch Gart suggested we relax our text in several places
to allow alternative behaviors.
He argued that separate predicates for blocking or non-blocking behavior
are unnecessary
because users will specify one or the other when files are opened;
on the other hand,
each system should provide an inquiry function
that returns the blocking behaviors it supports.
.P
We will add a statement
to the normative conformance definition section (got all that?)
saying that a strictly conforming application
\fIshall not\fP depend on either task blocking or program blocking.
.H 1 "Future Work"
.H 2 "Test Assertions for Current Work"
To become an \s-1IEEE\s0 standard,
the P1003.5 document must include test assertions.
Jim Leathrum/Clemson University and his graduate students
have volunteered to develop a set.
We like this is approach,
because the assertion writers will lack the working group's
preconceptions and biases.
Also, we won't have to do the work
and it frees the working group to press forward
to other important \s-1POSIX/A\s0da tasks.
We are well into the ballot process,
and will probably defer the test assertions to a separate document.
.H 2 "Ada Binding to Shells and Utilities (P1003.2)"
Dave Emery continues to develop the Ada binding to P1003.2.
.H 2 "Ada Binding to Real-Time Extensions to \s-1POSIX\s0 (P1003.4)"
Mars Gralia/Johns Hopkins University offered to put together
an Ada/P1003.4 Project Authorization Request (\s-1PAR\s0)
broad enough to cover both the P1003.4 and .4a work.
Ted Baker (former .5 snitch) generously provided the paper,
``Realtime Extension for Portable Operating Systems Ada Binding,''
some months back,
which we will use as a starting point.
We are currently refining a schedule to include in the \s-1PAR\s0.
.H 1 "Spreading the P1003.5 Word in Europe"
In my last Snitch Report,
I said that our group is making a real effort
to educate people about the coming \s-1POSIX\s0 Ada Language Binding Standard.
Dave Emery/\s-1MITRE\s0 submitted a team proposal
for a tutorial at Ada Europe in Athens, Greece.
It was accepted and scheduled as a half-day session for May 17, 1991.
Unfortunately, we will probably cancel it
because travel to Greece is currently discouraged.
